home *** CD-ROM | disk | FTP | other *** search
- Subject: misc questions/comments... and a patch (MiNT 1.09)
- Date: Sat, 18 Sep 93 18:07:30 CES
- From: Juergen Lock <nox@jelal.north.de>
- Message-Id: <9309181607.AA00099@jelal.north.de>
-
- i have a few things now...
-
- 1. what is the best way for a DEV_INSTALLd device to read a pipe to
- get data from a daemon process? currently i have device_open call
- f_open ("u:\\pipe\\...", O_RDONLY|O_GLOBAL) thru dos_tab and then later
- f_read, f_cntl etc. that works but if i could somehow use FILEPTRs
- directly it would save at least global handles.
-
- 2. it would be nice if a device could set its modification time...
- i can pass device_datime thru to the pipe but ls -l /dev (i.e. stat())
- doesn't seem to use that, it still prints the current time. for you
- to decide if the kernel should be changed or stat on /dev should call
- Fdatime... (with ls -l /pipe it works btw.) and btw it would also be
- nice if chmod/chown worked on devices, be it only to implement mesg n. :)
-
- 4. MiNTs debug output can sometimes make it very difficult to get
- keyboard input thru to processes on the console... it gobbles up
- characters like no good. here'a a patch that makes it eat chars only
- while ctrl+alt are down, i.e. to start/stop debug output on the console
- you now use ctrl-alt-<anykey>, not just any key.
-
- --- debug.c_ Wed Sep 1 13:24:16 1993
- +++ debug.c Tue Sep 14 22:42:02 1993
- @@ -264,15 +264,18 @@
- stopped = 0;
- while (1) {
- /* got a key; if ctl-alt then do it */
- - key = Bconin(out_device);
- if (out_device == 2) {
- if ((Kbshift(-1) & 0x0c) == 0x0c) {
- + key = Bconin(out_device);
- scan = (int) (((key >> 16) & 0xff));
- - do_func_key(scan);
- + if (!(char)key || ' ' < (unsigned char)key)
- + do_func_key(scan);
- + else goto ptoggle;
- }
- - else goto ptoggle;
- + else goto cont;
- }
- else {
- + key = Bconin(out_device);
- if (key < '0' || key > '9') {
- ptoggle: /* not a func key */
- if (stopped) break;
- @@ -287,6 +290,7 @@
- }
- }
- }
- +cont:
- s++;
- }
- }
-
- 5. to use tfork for things vfork was originally introduced for ;) (i.e.
- nonblocking fork that shares parents address space) you currently have
- to reset close-on-exec flags and signals for the child... seems the
- kernel treats tfork more like an exec than like a fork. if this would
- be changed (maybe needs a new Pexec mode?) the library could probably
- easily implement a `real' vfork... (ok malloc etc still are not
- re-entrant(sp?) but thats another story.)
-
- 6. is there something like a gem.prg (== start GEM) i can use with init
- that shuts down GEM gracefully when it gets SIGHUP? the one i have
- seems to be from pre-MiNT days and doesn't know about signals.
- (well i don't know if its even possible to shut down GEM gracefully...
- maybe save all vectors GEM changes and restore them on signals?)
-
- 7. terminal (or should i say pocket calculator :) if you know hp48...)
- on a serial port, stty -tandem: ^S (stopc) stops output but ^Q doesn't
- continue... i.e. seems nothing in the kernel looks for startc on serial
- ports! :-) (workaround: use stty tandem... but that doesn't help when
- the terminal/modem/whatever needs hardware handshake.)
-
- 8. when a pipe (pty) writer exited Finstat (or ioctl FIONREAD etc)
- returns -1 immediately even when there still is data left in the pipe.
- is that correct(tm) behavior?
-
- 9. and while we're at it... can someone who has BSD sources online
- (or whatever) look what happens to a ttys process group when a pgrp
- leader exits? i forgot to say that last time but just leaving it
- caused me problems with init, thats why i had to put the ioctl TIOCSPGRP
- there...
-
- ok and if you read up to here... the reason for the first 6 points
- comes with the next message. :-)
-
- cheers
- Juergen
- --
- J"urgen Lock / nox@jelal.north.de / UUCP: ..!uunet!unido!uniol!jelal!nox
- ...ohne Gewehr
- PGP public key fingerprint = 8A 18 58 54 03 7B FC 12 1F 8B 63 C7 19 27 CF DA
-